1. Field of Invention
The present invention pertains to the field of microprocessors. More particularly, this invention relates to a microprocessor having a mechanism for determining a microprocessor performance indication.
2. Art Background
Prior computer systems typically contain one or more processors that execute code or instructions for an operating system, application programs and other software elements of the computer system. Such a processor may be referred to as a central processing unit (CPU). In addition, some processors are implemented on an integrated circuit chip. Such processors may be referred to as CPU chips or microprocessors.
Such microprocessors are typically available from a variety of integrated circuit chip manufacturers. In addition, chip manufacturers usually market microprocessors with a variety of architectures. For example, some microprocessors implement an architecture which may be referred to as a superscaler architecture. Such a superscaler microprocessor usually has the capability to execute multiple instructions concurrently. In addition, some microprocessors contain specialized circuitry such as on-chip cache circuitry.
Typically, the instruction execution performance of a microprocessor depends on a particular architecture. The architecture of a particular microprocessor is usually indicated by a partname for the microprocessor. For example, prior microprocessors that conform to the x86 architecture have partnames such as "486SX" or "486DX" that indicate a particular architecture.
In addition, chip manufacturers typically market microprocessors having a variety of available clock speeds. In general, a higher clock speed for a microprocessor yields higher instruction execution performance. Typically, the clock speed of a particular microprocessor is indicated in the partname. For example, prior microprocessors that conform to the x86 architecture commonly have partnames such as "486DX33" and "486DX66" that indicate clock speeds of 33 and 66 MHz, respectively.
Typically, the operating system for such a computer system includes functions for determining the partname of the microprocessor installed in the system. In addition, a set of basic input/output software (BIOS) for such a computer system usually includes functions for determining the microprocessor partname. Such microprocessor identification has a variety of uses and provides the operating system, application programs, and the system user with an indication of the performance of the particular microprocessor installed in a system.
The operating system or BIOS in such a computer system commonly include functions for determining the clock speed of the microprocessor. Typically, such an operating system or BIOS determines the microprocessor clock speed by performing timing measurements during execution of predetermined instructions. For example, such a clock speed measurement usually enables the operating system or BIOS to determine the "33" or "66" portions of the partnames "486DX33" or "486DX66" of prior x86 microprocessors.
In addition, prior microprocessors commonly provide specialized instructions that enable software elements such as an operating system to retrieve a microprocessor identifier. For example, microprocessors that conform to the x86 architecture typically provide a CPUID instruction. The CPUID instruction returns a character string that identifies the chip manufacturer along with a variety of microprocessor attribute indications.
Typically, the manufacturer of a particular family of microprocessor chips provides performance information to operating system vendors and BIOS vendors. Such performance information usually enables the operating system or BIOS to convert the information returned by the CPUID instruction into the "486DX" or "486SX" portions of the partnames "486DX33" or "486DX66" of prior x86 microprocessors.
Chip manufactures typically evolve microprocessor architectures on a development schedule independent of the schedule of new software releases by operating system vendors and BIOS vendors. As a consequence, the performance information for a particular operating system or BIOS release may be out of sync with the performance information for newer microprocessor chips. Unfortunately, such an information mismatch can cause an operating system or BIOS to misidentify the particular microprocessor installed in a system.
Recently, the rate of advancement in microprocessor architectures and process technologies has accelerated. Unfortunately, such rapid microprocessor evolution increase the likelihood that an operating system or BIOS will misidentify the microprocessor installed in a particular system due to such an information mismatch.
In addition, clock speed is becoming a less meaningful indication of microprocessor performance with the more recent advances in superscaler architectures and on-chip caching. As a consequence, the clock speed portion of the partname of a microprocessor is being replaced by a microprocessor performance number or Pnumber. Typically, such a microprocessor performance number provides a relative performance indication in relation to a benchmark microprocessor. Unfortunately, such a move to Pnumbers complicates the operating system or BIOS functions for determining a partname of a microprocessor and increase the likelihood of misidentification.
One possible solution to such microprocessor misidentification is to hard-code a partname directly onto the silicon of the microprocessor chip. The operating system or BIOS could then read the partname directly without relying on performance information which may be out of date. Unfortunately, the clock speed a particular microprocessor chip, which is an important factor in determining a Pnumber, is usually not known until after a chip sorting step in the manufacturing process. In such a chip sorting step, the manufacturer typically performs timing tests on individual microprocessor chips to determine a certified clock speed. As a consequence, a key factor for hard-coding the Pnumber is not available until after chip fabrication and cannot be hard-coded in silicon.
Another possible solution is to include a non-volatile memory on the microprocessor chip. After the clock speed is determined during the chip sorting step, the Pnumber could be programmed into the non-volatile memory on the microprocessor chip. Unfortunately, processes for forming non-volatile memories are typically incompatible with the high speed logic processes that are employed to manufacture leading edge microprocessor chips.